package com.hospital.register.order.mapper;

import com.hospital.register.dto.order.PaymentListDto;
import com.hospital.register.model.order.PaymentInfo;
import com.hospital.register.vo.order.PaymentListVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 访问支付信息表
 *
 * @author 刘逸晖
 */
public interface PaymentInfoMapper {

    /**
     * 新增支付记录
     *
     * @param paymentInfo 预新增的支付记录
     * @return 影响的记录数
     */
    int insert(PaymentInfo paymentInfo);

    /**
     * 查询支付记录列表
     *
     * @param conditions 查询条件
     * @return 支付记录
     */
    List<PaymentListVo> list(@Param("conditions") PaymentListDto conditions);

    /**
     * 根据订单 id 、支付类型、支付状态查询支付记录的 id
     *
     * @param orderId       所属订单的 id
     * @param paymentType   支付类型
     * @param paymentStatus 支付状态，可以为空
     * @return id
     */
    Long selectIdByConditions(@Param("orderId") Long orderId, @Param("paymentType") Byte paymentType, @Param("paymentStatus") Byte paymentStatus);

    /**
     * 根据 id 更新支付记录
     *
     * @param paymentInfo id 极其新数据
     *                    id 、更新时间必填
     *                    创建时间、删除标记 不可更新
     * @return 更新的记录数
     */
    int updateById(@Param("paymentInfo") PaymentInfo paymentInfo);

}
